computedvalues: Pass dependencies to set_value()
authorBenjamin Otte <otte@redhat.com>
Fri, 24 Aug 2012 15:00:02 +0000 (17:00 +0200)
committerBenjamin Otte <otte@redhat.com>
Tue, 28 Aug 2012 13:42:24 +0000 (15:42 +0200)
This simplifies the code.

gtk/gtkcssanimatedvalues.c
gtk/gtkcsscomputedvalues.c
gtk/gtkcsscomputedvaluesprivate.h
gtk/gtkcsslookup.c
gtk/gtkcsstransition.c

index 7617faa0496094648fd0179a11695d10920232a3..c33784996869a4b1b12d46cff78ee38929447a9f 100644 (file)
@@ -251,6 +251,7 @@ _gtk_css_animated_values_new (GtkCssComputedValues *computed,
       _gtk_css_computed_values_set_value (GTK_CSS_COMPUTED_VALUES (values), 
                                           i,
                                           value,
+                                          0,
                                           _gtk_css_computed_values_get_section (computed, i));
     }
 
index 63b0ee7a9f02104e8db60738fdbf12ca4931d4a5..efca1591df1bcdabb60c7ca6a8187b786cee38da 100644 (file)
@@ -108,12 +108,11 @@ _gtk_css_computed_values_compute_value (GtkCssComputedValues *values,
                                         GtkCssSection        *section)
 {
   GtkCssDependencies dependencies;
+  GtkCssValue *value;
 
   g_return_if_fail (GTK_IS_CSS_COMPUTED_VALUES (values));
   g_return_if_fail (GTK_IS_STYLE_CONTEXT (context));
 
-  gtk_css_computed_values_ensure_array (values, id + 1);
-
   /* http://www.w3.org/TR/css3-cascade/#cascade
    * Then, for every element, the value for each property can be found
    * by following this pseudo-algorithm:
@@ -131,27 +130,11 @@ _gtk_css_computed_values_compute_value (GtkCssComputedValues *values,
   else
     _gtk_css_value_ref (specified);
 
-  g_ptr_array_index (values->values, id) = _gtk_css_value_compute (specified, id, context, &dependencies);
+  value = _gtk_css_value_compute (specified, id, context, &dependencies);
 
-  if (dependencies & (GTK_CSS_DEPENDS_ON_PARENT | GTK_CSS_EQUALS_PARENT))
-    values->depends_on_parent = _gtk_bitmask_set (values->depends_on_parent, id, TRUE);
-  if (dependencies & (GTK_CSS_EQUALS_PARENT))
-    values->equals_parent = _gtk_bitmask_set (values->equals_parent, id, TRUE);
-  if (dependencies & (GTK_CSS_DEPENDS_ON_COLOR))
-    values->depends_on_color = _gtk_bitmask_set (values->depends_on_color, id, TRUE);
-  if (dependencies & (GTK_CSS_DEPENDS_ON_FONT_SIZE))
-    values->depends_on_font_size = _gtk_bitmask_set (values->depends_on_font_size, id, TRUE);
+  _gtk_css_computed_values_set_value (values, id, value, dependencies, section);
 
-  if (section)
-    {
-      if (values->sections == NULL)
-        values->sections = g_ptr_array_new_with_free_func (maybe_unref_section);
-      if (values->sections->len <= id)
-        g_ptr_array_set_size (values->sections, id + 1);
-
-      g_ptr_array_index (values->sections, id) = gtk_css_section_ref (section);
-    }
-  
+  _gtk_css_value_unref (value);
   _gtk_css_value_unref (specified);
 }
                                     
@@ -159,6 +142,7 @@ void
 _gtk_css_computed_values_set_value (GtkCssComputedValues *values,
                                     guint                 id,
                                     GtkCssValue          *value,
+                                    GtkCssDependencies    dependencies,
                                     GtkCssSection        *section)
 {
   g_return_if_fail (GTK_IS_CSS_COMPUTED_VALUES (values));
@@ -169,6 +153,15 @@ _gtk_css_computed_values_set_value (GtkCssComputedValues *values,
     _gtk_css_value_unref (g_ptr_array_index (values->values, id));
   g_ptr_array_index (values->values, id) = _gtk_css_value_ref (value);
 
+  if (dependencies & (GTK_CSS_DEPENDS_ON_PARENT | GTK_CSS_EQUALS_PARENT))
+    values->depends_on_parent = _gtk_bitmask_set (values->depends_on_parent, id, TRUE);
+  if (dependencies & (GTK_CSS_EQUALS_PARENT))
+    values->equals_parent = _gtk_bitmask_set (values->equals_parent, id, TRUE);
+  if (dependencies & (GTK_CSS_DEPENDS_ON_COLOR))
+    values->depends_on_color = _gtk_bitmask_set (values->depends_on_color, id, TRUE);
+  if (dependencies & (GTK_CSS_DEPENDS_ON_FONT_SIZE))
+    values->depends_on_font_size = _gtk_bitmask_set (values->depends_on_font_size, id, TRUE);
+
   if (section)
     {
       if (values->sections == NULL)
index 239afca53a18f5122608a4e8ec82aead274cacbf..799121b5edb1a6a0a26e730426ac911c533a55a1 100644 (file)
@@ -68,6 +68,7 @@ void                    _gtk_css_computed_values_compute_value        (GtkCssCom
 void                    _gtk_css_computed_values_set_value            (GtkCssComputedValues     *values,
                                                                        guint                     id,
                                                                        GtkCssValue              *value,
+                                                                       GtkCssDependencies        dependencies,
                                                                        GtkCssSection            *section);
                                                                         
 GtkCssValue *           _gtk_css_computed_values_get_value            (GtkCssComputedValues     *values,
index 940f68cebb8dbaabde8295b8be56e6a4b6dcd6c4..e0f0af78f60f8fabc4dda6c35e98a98c6cb55bde 100644 (file)
@@ -167,6 +167,7 @@ _gtk_css_lookup_resolve (GtkCssLookup         *lookup,
         _gtk_css_computed_values_set_value (values,
                                             i,
                                             lookup->values[i].computed,
+                                            0,
                                             lookup->values[i].section);
       else
         _gtk_css_computed_values_compute_value (values,
index 79b803d93dd2053c27a17866f4db5b3d0b2c4b55..cbedc8b6cc30a99071c74edb31a3737aa85888d0 100644 (file)
@@ -51,7 +51,8 @@ gtk_css_transition_set_values (GtkStyleAnimation    *animation,
         value = _gtk_css_value_ref (transition->end);
     }
 
-  _gtk_css_computed_values_set_value (values, transition->property, value, NULL);
+  /* XXX: Is using 0 correct here? */
+  _gtk_css_computed_values_set_value (values, transition->property, value, 0, NULL);
   _gtk_css_value_unref (value);
 
   return _gtk_bitmask_set (changed, transition->property, TRUE);